package main

import "fmt"

func deferFunc() int {
	fmt.Printf("deferFunc is called...")
	return 0
}

func returnFunc() int {
	fmt.Printf("returnFunc is called...")
	return 0
}

func returnAndDefer() int {
	defer deferFunc()
	return returnFunc()
}

func main() {
	//写入defer 推迟执行 关键字
	//首先入栈  再出栈
	defer fmt.Println("main end1")
	//再入栈  先出栈
	defer fmt.Println("main end2")

	//执行
	fmt.Println("main::hello go 1")
	//执行
	fmt.Println("main::hello go 2")

	//defer return 执行顺序前后
	//defer 后执行 因为要在函数最后周期执行
	returnAndDefer()
}
